03 - t-Tests

Auswertung Emprischer Daten

Prof. Dr. David F. Urschler

Welche t-Tests kennen wir?

  • Einstichproben t-Test

  • t-Test für unabhängige Stichproben

  • t-Test für abhängige Stichproben

Einstichproben t-Test

Welche Fragen können wir beantworten?

  • Haben Menschen Präferenzen für bestimmte Schauspieler*innen?

  • Ist unsere Gruppe intelligenter als der Durchschnitt?

  • Suchen Menschen ausgewogen nach Informationen?

Einstichproben t-Test

Vorgehensweise

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

Einstichproben t-Test

Beispiel

Haben Menschen eine Präferenz für einen Batman-Darsteller?

Einstichproben t-Test

Beispiel

Informationen zum Datensatz ae_t_test_one.csv

  • demographische Daten (id, age & gen: 1 = weiblich, 2 = männlich)
  • Vorläufige Entscheidung (prel_dec: 0 = “Christian Bale”, 1 = “Adam West”)
  • Angaben ob ein Artikel gelesen werden möchte(… _watch: 0 = nein, 1 = ja)
  • Finale Entscheidung (prel_dec: 0 = “Christian Bale”, 1 = “Adam West”)

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style A fill: #009e73

Einstichproben t-Test

Beispiel

Daten einlesen

Zeig mir den Code
ds <- read.csv(here::here("ae_t_test_one.csv"),
               header = TRUE)

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style B fill: #009e73

Einstichproben t-Test

Beispiel

Übersicht verschaffen

Zeig mir den Code
names(ds)
 [1] "id"        "gen"       "age"       "prel_dec"  "a01_impo"  "a01_watch"
 [7] "a02_impo"  "a02_watch" "a03_impo"  "a03_watch" "a04_impo"  "a04_watch"
[13] "a05_impo"  "a05_watch" "a06_impo"  "a06_watch" "a07_impo"  "a07_watch"
[19] "a08_impo"  "a08_watch" "a09_impo"  "a09_watch" "a10_impo"  "a10_watch"
[25] "a11_impo"  "a11_watch" "a12_impo"  "a12_watch" "fina_dec" 

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style D fill: #009e73

Einstichproben t-Test

Beispiel

Ergeben die Daten Sinn?

Zeig mir den Code
ds |> 
  select(contains("watch")) |> 
  summary()

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style E fill: #009e73

Einstichproben t-Test

Beispiel

Skalenwerte berechnen

Gender-Variable als Faktor-Variable

Zeig mir den Code
ds$gen_f <- factor(ds$gen,
                   levels = c(1, 2),
                   labels = c("w", "m"))

Einstichproben t-Test

Beispiel

Skalenwerte berechnen

Welche Szenen werden entsprechend der ursprünglichen Wahl gewählt?

Zeig mir den Code
ds$watch_sup_sum <- ifelse(ds$prel_dec == 1, 
                          rowSums(ds[c("a01_watch",
                                       "a03_watch",
                                       "a05_watch",
                                       "a07_watch",
                                       "a09_watch",
                                       "a11_watch")],
                                  na.rm = TRUE),
                          rowSums(ds[c("a02_watch",
                                       "a04_watch",
                                       "a06_watch",
                                       "a08_watch",
                                       "a10_watch",
                                       "a12_watch")],
                                  na.rm = TRUE))

Einstichproben t-Test

Beispiel

Skalenwerte berechnen

Welche Szenen werden entgegen der ursprünglichen Wahl gewählt?

Zeig mir den Code
ds$watch_con_sum <- ifelse(ds$prel_dec == 0, 
                          rowSums(ds[c("a01_watch",
                                       "a03_watch",
                                       "a05_watch",
                                       "a07_watch",
                                       "a09_watch",
                                       "a11_watch")],
                                  na.rm = TRUE),
                          rowSums(ds[c("a02_watch",
                                       "a04_watch",
                                       "a06_watch",
                                       "a08_watch",
                                       "a10_watch",
                                       "a12_watch")],
                                  na.rm = TRUE))

Einstichproben t-Test

Beispiel

Skalenwerte berechnen

Würden die Menschen mehr Szenen sehen wollen, die mit Ihrer Präferenz übereinstimmen?

Zeig mir den Code
ds$watch_bias <- ds$watch_sup_sum - ds$watch_con_sum

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style F fill: #009e73

Einstichproben t-Test

Beispiel

Einstichproben-t–Test berechnen

Voraussetzungen

  • metrisches Skalenniveau
  • “normalverteilte” Daten
  • keine Ausreißer

Einstichproben t-Test

Beispiel

Einstichproben-t-Test berechnen

normalverteilte Daten - grafisch

Zeig mir den Code
hist(ds$watch_bias)

Einstichproben t-Test

Beispiel

Einstichproben-t–Test berechnen

normalverteilte Daten - statistisch

  • Kolmogorov-Smirnov-Test
  • Shapiro-Wilk-Test
Zeig mir den Code
# Kolmogorov-Smirnov-Test
ks.test(ds$watch_bias, 
        "pnorm",
        mean = mean(ds$watch_bias, 
                    na.rm = TRUE),
        sd = sd(ds$watch_bias, 
                na.rm = TRUE))

# Shapiro-Wilk-Test
shapiro.test(ds$watch_bias)

Einstichproben t-Test

Beispiel

Einstichproben-t-Test berechnen

normalverteilte Daten - Ergänzung

  • zu wenig Power bei kleinen Stichproben -> Shapiro-Wilk-Test hat mehr Power
  • bei größeren Stichproben werden beide Tests fast immer signifikant, obwohl die Daten normalverteilt sind
  • t-Tests sind robust gegen diese Vereletzung -> zentrales Grenzwerttheorem

Einstichproben t-Test

Beispiel

Einstichproben-t–Test berechnen

Zeig mir den Code
# Test durchführen
t.test(ds$watch_bias,
       mu = 0)

# Effektgröße berechnen
effectsize::cohens_d(t.test(ds$watch_bias,
       mu = 0))

Einstichproben t-Test

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(Einstichproben-t-Test) --> 
G(Ergebnis berichten)

style G fill: #009e73

Einstichproben t-Test

Beispiel

Ergebnis APA-konfrom berichten

„Ein Einstichproben t-Test wurde durchgeführt um zu testen, ob die Präfrenz der Batmandarsteller sich signifikant vom null (μ = 0) unterscheidet. Die Ergebnisse zeigen, einen signifikanten Unterschied zu null, t(69) = 2.59, p = .012, d = 0.31, 95% CI [0.07, 0.55]. Im Durchschnitt wählten die Versuchspersonen mehr Szenen (M = 0.47, SD = 1.52) , die mit ihrer vorläufigen Entscheidung übereinstimmen.”

t-Test für unabhängige Stichproben

Welche Fragen können wir beantworten?

Über die Psychologie hinaus

  • Führt der Konsum von alkholfreien Getränken zu einem Rauschzustand?

  • Produziert einen Fertigunglinie weniger als eine andere?

  • Hilft ein bestimmtes Medikament den Blutdruck zu senken?

  • Haben Globoli einen “Nuzten”?

t-Test für unabhängige Stichproben

Welche Fragen können wir beantworten?

In der Psychologie

  • Führt Weihnachtsdekoration dazu, dass Menschen sich ausgeschlossen fühlen?

  • Kann schlechter Humor die Leistung von Studierende steigern?

  • Führt der Konsum von THC eher zur Psychose als jener von CBD?

  • Reduziert ein Training die Stresssymptomatik?

t-Test für unabhängige Stichproben

Vorgehensweise

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

t-Test für unabhängige Stichproben

Beispiel

Hat die Social-Media-Plattformen einen Einfluss darauf, wie sehr die Inhalte “geliked” werden?

t-Test für unabhängige Stichproben

Beispiel

Informationen zum Datensatz ae_t_test_ind.csv

  • demographische Daten (id, age & gen: 1 = weiblich, 2 = männlich)
  • Social-Media-Plattform (smp: 0 = “TikTok”, 1 = “Twitch”)
  • Bewertung der Inhalte über zehn Items (1 = trifft nicht zu, 7 = trifft voll zu)

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style A fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

Daten einlesen

Zeig mir den Code
ds <- read.csv(here::here("ae_t_test_ind.csv"),
               header = TRUE)

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style B fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

Übersicht verschaffen

Zeig mir den Code
names(ds)
 [1] "id"    "age"   "gen"   "smp"   "rp01"  "rp02"  "rp03"  "rp04"  "rp05" 
[10] "rp06"  "rp07"  "rp08"  "rp09"  "rp09r" "rp10" 

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style D fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

Ergeben die Daten Sinn?

Zeig mir den Code
ds |> 
  select(starts_with("rp")) |> 
  summary()

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style E fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

Skalenwerte berechnen

Gender-Variable als Faktor-Variable

Zeig mir den Code
ds$gen_f <- factor(ds$gen,
                   levels = c(1, 2),
                   labels = c("w", "m"))

t-Test für unabhängige Stichproben

Beispiel

Skalenwerte berechnen

Social-Media-Variable als Faktor-Variable

Zeig mir den Code
ds$smp_f <- factor(ds$smp,
                   levels = c(0, 1),
                   labels = c("Tik_Tok", "Twitch"))

t-Test für unabhängige Stichproben

Beispiel

Skalenwerte berechnen

Wie wird der Inhalt bewertet?

Zeig mir den Code
ds$bw_mean <- rowMeans(ds[c("rp01",
                            "rp02",
                            "rp03",
                            "rp04",
                            "rp05",
                            "rp06",
                            "rp07",
                            "rp08",
                            "rp09",
                            "rp10")],
                       na.rm = TRUE)

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style F fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

t-Test für unabhängige Stichproben berechnen

Voraussetzungen

  • Stichproben müssen unabähnig sein
  • metrisches Skalenniveau der AV
  • “normalverteilte” Daten
  • Varianzhomogenität

t-Test für unabhängige Stichproben

Beispiel

t-Test für unabhängige Stichproben berechnen

normalverteilte Daten - grafisch

Zeig mir den Code
hist(ds$bw_mean)

t-Test für unabhängige Stichproben

Beispiel

t-Test für unabhängige Stichproben berechnen

normalverteilte Daten - statistisch

  • Kolmogorov-Smirnov-Test
  • Shapiro-Wilk-Test
Zeig mir den Code
# Kolmogorov-Smirnov-Test
ks.test(ds$bw_mean, 
        "pnorm",
        mean = mean(ds$bw_mean, 
                    na.rm = TRUE),
        sd = sd(ds$bw_mean, 
                na.rm = TRUE))

# Shapiro-Wilk-Test
shapiro.test(ds$bw_mean)

t-Test für unabhängige Stichproben

Beispiel

t-Test für unabhängige Stichproben berechnen

Varianzhomogenität

  • Levene-Test
Zeig mir den Code
car::leveneTest(bw_mean ~ smp_f,
                data = ds)

t-Test für unabhängige Stichproben

Beispiel

t-Test für unabhängige Stichproben berechnen

Zeig mir den Code
# Test durchführen
t.test(bw_mean ~ smp_f,
       var.equal = TRUE,
       data = ds)

# Effektgröße berechnen
effectsize::cohens_d(bw_mean ~ smp_f,
                     var.equal = TRUE,
                     data = ds)

t-Test für unabhängige Stichproben

Beispiel

flowchart TB

A(Daten einlesen) --> 
B(Übersicht verschaffen) --> 
C(Namen brauchbar machen) --> 
D(Ergeben die Daten Sinn?) --> 
E(Skalenwerte berechnen) --> 
F(*t*-Test für unabhängige Stichproben) --> 
G(Ergebnis berichten)

style G fill: #009e73

t-Test für unabhängige Stichproben

Beispiel

Ergebnis APA-konfrom berichten

„Ein t-Test für unabhängie Sichproben wurde durchgeführt um zu testen, ob die Wahl der Social-Media-Plattform eine Auswikrung auf die Wahrnehmung des Inhalts hat. Die Ergebnisse zeigen, dass die Versuchspersonen die Inhalte auf Twitch (M = 5.24, SD = 0.72) besser als auf Tik Tok (M = 4.26, SD = 0.64) bewerten, t(22) = 3.53, p = .002, d = 1.44, 95% CI [2.33, 0.52].